package cang.string.Day03.File;

import java.io.File;
import java.io.FileFilter;

public class FileFilterDemo {
    public static void main(String[] args) {
        /*
        有条件的列出目录的内容
        listFiles(过滤条件)
         - 有条件的列出目录的内容，满足条件的文件作为返回数组的成员、
         - 不满足条件的文件被过滤掉
         listFiles 会自动调用过滤方法，筛选文件
         过滤条件：FileFilter
         Filter：过滤器
         */

        //过滤条件：筛选.txt文件
        FileFilter filter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
//                String name = pathname.getName();
                //写筛选逻辑：pathname 代表每个被筛选的文件
                //找到文件名，检查文件名的末尾，是否以.txt为结束
                //如果方法返回true就表示文件是目标文件，返回false就是被忽略的文件
//                return name.endsWith(".txt");
                return pathname.getName().endsWith(".txt");

//                if (name.endsWith(".txt")){
//                    return true;
//                }else {
//                    return false;
//                }
            }
        };
        FileFilter filter1 = (File pathname)->{
            return pathname.getName().endsWith(".txt");};
        FileFilter filter2 = pathname -> pathname.getName().endsWith(",txt");

        File dir = new File("./");
        if (dir.isDirectory()){     //判断是否是目录
            //listFiles 在执行期间会自动调用Filter中的方法
            //File[] files = dir.listFiles(filter);
            //将匿名内部类直接写到listFiles方法的参数上，使代码更加紧凑
            //
            //
            File[] files = dir.listFiles(filter1);       //过滤条件
            for (File f:files){
                System.out.println(f);
            }
        }

    }
}
